#include "ThreadPool.hpp"
#include "Task.hpp"
#include <memory>

//  auto task = std::make_shared<std::packaged_task<RetType()>>(std::bind(std::forward<F>(f), std::forward<Args>(args)...));

void testThreadPool()
{
	// 创建线程池之后，所有线程就启动了
	std::unique_ptr<ThreadPool<CalTask>> tp(new ThreadPool<CalTask>(10));
	int x, y;
	char op;
	while (true)
	{
		std::cout << "请输入整形数字1# ";
		std::cin >> x;
		std::cout << "请输入整形数字2# ";
		std::cin >> y;
		std::cout << "请输入需要进行的运行 + - * / % # ";
		std::cin >> op;
		if (op == 'x')
			break;
		CalTask t(x, y, op, my_math);
		std::cout << "你录入了一个任务 " << t.toString();
		tp->push(t);
	}
	tp.release();
}

int main()
{
	testThreadPool();
	return 0;
}